package Modele;

import java.io.Serializable;

public class Joueur implements Serializable{
	
	  private String nomJoueur;
	  private CombinaisonTuile active;
	  private CombinaisonTuile declin;
	  /*Tant que le joueur ne passe pas le peuple en dé–�lin, Dé–�lin est null*/
	  private int points;
	  /*Points de victoires du joueur*/
	  //private ArrayList<Region> regionsConquises;
	  private boolean newpeuple;
	  
	  public Joueur(){
		  nomJoueur="Inconnu";
		  points=7;
		  active=null;
		  declin= null;
	  }
	  
	  public Joueur(String nomJ){
		  nomJoueur=nomJ;
		  points=7;
		  active=null;
		  declin= null;
		  
	  }
	  
	  /****************getters********************/
	  public CombinaisonTuile getActive() {
		  return active;
	  }

	  public CombinaisonTuile getDeclin() {
		  return declin;
	  }

	  public int getPoints() {
		  return points;
	  }
	  
	  public String getNomJoueur() {
		  return nomJoueur;
		
	  }
	  public boolean getnewpeuple() {
		  return newpeuple;
		
	  }
	  /***************setters********************/
	  
	  public void setActive( CombinaisonTuile comb) {
		//  this.active=new
		  this.active=comb;
		  newpeuple=true;
	  }

	  public void setDeclin( CombinaisonTuile comb) {
		  this.declin= comb;
	  }

	  public void setPoints( int nbre) {
		  this.points=nbre;
	  }
	  
	  public void setNewPeuple(boolean a){
		  this.newpeuple=a;
	  }
	  
	  /*************autres methodes ***************/
	  
	  public void passageDeclin(Pile p) {
		  /*Appel du constructeur par recopie de active vers declin, puis active prend la valeur null.
			A voir utilitï¿½mé– hode setDeclin()*/
		  	this.active.passageDeclin(p);
		  	if(this.declin!=null)
		  		this.declin.disappear(p);
		  	this.declin=active;
	
		  	this.active=null;
	  }


	  public void pertePoints( int nbre) {
	  /* Le joueur perd des points de victoire lorsque celui-ci veut choisir un peuple qui est payant, il paiera 0 pour le premier peuple,..., 5 pour le dernier peuple(soit i points)*/
		  points-=nbre;
	  }

	  public void ajoutPoints(int i) {
		  points+=i;
	  }

	  public void preparation() {
		  active.preparation();
	  }
	  
	  public void perteRegion(Regions reg) {
	  /* On supprime la ré–“ion du tableau regionConquises* du joueur*/
		  if(reg.isDeclin()){
			  declin.perteRegion(reg);
		  }
		  else{
			  active.perteRegion(reg);
		  }
	  }
	  
	  public void ajoutRegion(Regions reg) {
		  newpeuple=false;
		  if(reg.getJoueur()!=null){
			  reg.getJoueur().perteRegion(reg);
		  }
		  reg.setDeclin(false);
		  active.ajoutRegion(reg);
		  reg.setJoueur(this);
	  }
	  
	  public void ajoutRegionbydie(Regions reg) {
		  newpeuple=false;
		  if(reg.isDeclin()==true){
			  reg.getJoueur().perteRegion(reg);	// on supprime la region du tableau du joueur qui etait prÃ©sent sur la region
		  }									// si le peuple prÃ©sent Ã©tait actif on redonne des pions au joueur
		  reg.setDeclin(false);
		  active.ajoutRegionbydie(reg);
		  reg.setJoueur(this);
	  }

	  public void gainPointsFinTour(){
			if(active!=null){
				active.gainPointsFinTour();
				points+=active.getPoints();
			}	
			if(declin!=null){
				declin.gainPointsFinTourDeclin();
				points+=declin.getPoints();
	  		}
	  }
	  


}
